home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1833 / 1833.xpi / chrome / yoono.jar / ff3 / bookmarks.js < prev   
Text File  |  2009-12-16  |  5KB  |  162 lines

  1.  
  2. // lazy loaded (not ready at xpcom loading)
  3. var BKMSERV=null;
  4. var HISTSERV=null;
  5. var LIVESERV=null;
  6.  
  7. function start(launch) {
  8.     
  9.     BKMSERV=CL['@mozilla.org/browser/nav-bookmarks-service;1'].getService(CI.nsINavBookmarksService);
  10.     HISTSERV=CL['@mozilla.org/browser/nav-history-service;1'].getService(CI.nsINavHistoryService);
  11.     LIVESERV = CL["@mozilla.org/browser/livemark-service;2"].getService(CI.nsILivemarkService);
  12.     
  13.     gCurrentTree = new bkmNode(BKMSERV.bookmarksMenuFolder, null, true);
  14.     gToolbarNode = new bkmNode(BKMSERV.toolbarFolder,gCurrentTree, true);
  15.     gCurrentTree.addChild(gToolbarNode);
  16.     
  17.     BKMSERV.addObserver(BkmsObserver, false);
  18.     
  19.     launch();
  20.     //yoono.bkm.dump();
  21. }
  22.  
  23. function uri(uri) {
  24.     return Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newURI(uri, null, null);
  25. }
  26.  
  27. var gBrowserBkm = {
  28.     
  29.     runInBatchMode : function (process) {
  30.         BKMSERV.runInBatchMode({
  31.             runBatched : function () {
  32.                 log.debug("START BATCH!");
  33.                 process();
  34.                 log.debug("END BATCH!");
  35.             }
  36.         }, null);
  37.     },
  38.     
  39.     createBookmark : function ( title, url, parent) {
  40.         //log.debug(" create bookmark = title:"+title+" url:"+url+" parentId:"+parent.getId());
  41.         BKMSERV.insertBookmark(parent.getId(), uri(url), -1, title);
  42.     },
  43.     
  44.     createLivemark : function ( title, url, parent) {
  45.         log.debug(" create livemark = title:"+title+" url:"+url+" parentId:"+parent.getId());
  46.         var nsurl=uri(url);
  47.         LIVESERV.createLivemark(parent.getId(),title,uri(nsurl.prePath),nsurl,-1);
  48.     },
  49.     
  50.     create : function (node, parent) {
  51.         log.debug(" create from node = nodeId:"+node+" parentId:"+parent.getId());
  52.         if (node.isLive())
  53.             return this.createLivemark(node.getName(),node.getUrl(),node.getParent());
  54.         return this.createBookmark(node.getName(),node.getUrl(),node.getParent());
  55.     },
  56.     
  57.     createFolder : function (name, parent) {
  58.         //log.debug(" create folder = title:"+name+" parentId:"+parent.getId());
  59.         var id = BKMSERV.createFolder(parent.getId(),name,-1);
  60.         return BkmsObserver.onItemAdded(id,parent.getId(),-1);
  61.     },
  62.     
  63.     rename : function (node) {
  64.         log.debug(" rename nodeId:"+node.getId()+" title:"+node.getName());
  65.         BKMSERV.setItemTitle(node.getId(),node.getName());
  66.     },
  67.     
  68.     remove : function (node) {
  69.         //log.debug(" remove bookmark nodeId:"+node.getId());
  70.         BKMSERV.removeItem(node.getId());
  71.         return BkmsObserver.onItemRemoved(node.getId(),node.getParent().getId(),-1);
  72.     }
  73.     
  74. }
  75.  
  76.  
  77.  
  78.  
  79.  
  80. function bkmNode(id, parent) {
  81.     
  82.     this.id=id;
  83.     this.childsList=[];
  84.     this.private=false;
  85.     gBkmById[id] = this;
  86.     
  87.     this.update(parent);
  88.     
  89.     if (this.isFolder()) {
  90.         
  91.         var options = HISTSERV.getNewQueryOptions();
  92.         var query = HISTSERV.getNewQuery();
  93.         query.setFolders([id], 1);
  94.         var result = HISTSERV.executeQuery(query, options);
  95.         var rootNode = result.root;
  96.         rootNode.containerOpen = true;
  97.         var cc = rootNode.childCount;
  98.     nbBkms --;
  99.         for (var i=0; i < cc; ++i) {
  100.             var node = rootNode.getChild(i);
  101.             if ( node.type != node.RESULT_TYPE_SEPARATOR ) { // ignore separator and "classeur/tags" folder
  102.         nbBkms ++;
  103.                 this.childsList.push(new bkmNode(node.itemId, this));
  104.             }
  105.         }
  106.         
  107.     }
  108.  
  109. }
  110.  
  111. // called on properties update
  112. bkmNode.prototype.update = function (parent) {
  113.     
  114.     var oldParent=this.parent, oldType=this.type, oldName=this.name, oldUrl=this.url;
  115.     
  116.     this.parent=parent?parent:this.parent;
  117.     this.type=BKMSERV.getItemType(this.id);
  118.     // Replace toolbar folder name
  119.     if (this.id==BKMSERV.toolbarFolder)
  120.         this.name=TOOLBARNAME;
  121.     else
  122.         this.name = BKMSERV.getItemTitle(this.id);
  123.     // avoid void getName()!
  124.     if (!this.name)
  125.         this.name="";
  126.     try {
  127.       this.url=( this.isBookmark() ? BKMSERV.getBookmarkURI(this.id).spec : (this.isLive()?LIVESERV.getFeedURI(this.id).spec:null) );
  128.   } catch(e) {
  129.     log.error("Error, Corrupted bookmark, id: " + this.id + ", name: " + this.name);
  130.   }
  131.     this.path=false;
  132.     
  133.     if (this.isBookmark() || this.isLive()) {
  134.         if (oldUrl)
  135.             delete gBkmByUrl[oldUrl];
  136.         gBkmByUrl[this.getUrl()] = this;
  137.     }
  138.     
  139.     if (oldParent!=this.parent || (this.isFolder() && oldName!=this.name))
  140.         this.traverseNode({onNode:function(node){node.path=false}});
  141.     
  142.     if (oldParent!=this.parent || oldType!=this.type || oldName!=this.name || oldUrl!=this.url) {
  143.         this.syncid=false;
  144.         this.path = false;
  145.         this.resetSyncid();
  146.         return true;
  147.     }
  148.     return false;
  149.     
  150. }
  151.  
  152. bkmNode.prototype.isFolder = function () {
  153.     return (this.type==BKMSERV.TYPE_FOLDER && !this.isLive());
  154. }
  155. bkmNode.prototype.isBookmark = function () {
  156.     return (this.type==BKMSERV.TYPE_BOOKMARK);
  157. }
  158. bkmNode.prototype.isLive = function () {
  159.     return LIVESERV.isLivemark(this.id);
  160. }
  161.  
  162.